/******************************************************************************\
**  版     权：深圳开鸿数字产业发展有限公司（2021）
**  文件名称：Led.h
**  功能描述：LED模块化程序，支持设置LED常亮，常灭，闪烁周期设置，闪烁次数设置等功能。
**  作     者：王滨泉
**  日     期：2018-01-01
**  版     本：V0.0.1
**  变更记录：V0.0.1/2018-01-01
              1.首次创建
\******************************************************************************/
#ifndef _LED_H
#define _LED_H
//------------------------------------------------------------------------------

/******************************************************************************\
                             Includes
\******************************************************************************/
#include <stdio.h>
#include <stdbool.h>
#include <unistd.h>
#include <securec.h>

#include "ohos_init.h"
#include "cmsis_os2.h"
#include "ohos_types.h"
#include "iot_errno.h"
#include "iot_gpio.h"

/******************************************************************************\
                          Macro definitions
\******************************************************************************/
//------------------------------------------------------------------------------
//io宏定义
#define LED_RED_PIN				10
#define LED_GREEN_PIN			11
#define LED_YELLOW_PIN			12	
#define LED_BLUE_PIN			12
/******************************************************************************\
                         Typedef definitions
\******************************************************************************/
//------------------------------------------------------------------------------
//LED名称重定义，顺序和上方的宏定义保持一致
typedef enum
{
    LED_RED = 0,				//红灯
	LED_GREEN,					//绿灯
	LED_YELLOW,					//黄灯
	#ifdef DISPLAY
	LED_DISPLAY,				//显示屏
	#endif
	LED_ID_MAX
}TE_LED_ID;
//------------------------------------------------------------------------------
//LED工作状态
typedef enum 
{
	LED_OFF,
	LED_ON,
	LED_FLASH,
	LED_KEEP_FLASHING
}TE_LED_STATE;
//------------------------------------------------------------------------------
//LED控制结构体
typedef struct{
	uint8_t State[LED_ID_MAX];//LED	的工作状态
	uint16_t Flash_Duty[LED_ID_MAX];//LED占空比，即点亮时间
	uint16_t Flash_Period[LED_ID_MAX];//LED周期
	uint16_t Flash_Times[LED_ID_MAX];//闪烁次数
	uint16_t Timer[LED_ID_MAX];//时间计数 1ms计数一次
}TS_LED_INFO;

//获取数码管显示内容
extern int(*GET_DISPLAYDATA_CB)(uint8_t *Data,uint8_t *Len);

/******************************************************************************\
                    Global variables and functions
\******************************************************************************/

/*
* 函数名称 : LED_Init
* 功能描述 : LED初始化
* 参     数 : NONE
* 返回值      : NONE
*/
/******************************************************************************/
extern void LED_Init(void);
/******************************************************************************/

/*
* 函数名称 : LED_Clr
* 功能描述 : 熄灭全部LED
* 参     数 : NONE
* 返回值      : NONE
*/
/******************************************************************************/
extern void LED_Clr(void);
/******************************************************************************/

/*
* 函数名称 : LED_Service
* 功能描述 : LED驱动，需放在10ms时间片中
* 参     数 : NONE
* 返回值      : NONE
*/
/******************************************************************************/
extern void LED_Drv(void);
/******************************************************************************/

/*
* 函数名称 : LED_Set
* 功能描述 : LED工作方式设置
* 参     数 : LedId：ID / State：工作方式 / Duty:闪烁占空比 / Period:闪烁周期 / Times:闪烁次数
* 返回值      : NONE
*/
/******************************************************************************/
extern void LED_Set(uint8_t LedId,uint8_t State,uint16_t Duty,uint16_t Period,uint16_t Times);
/******************************************************************************/

//------------------------------------------------------------------------------
#endif
/******************************* End of File (H) ******************************/

